{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### pyod对HBOS(Histogram-based Outlier Detection Score)算法的实现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pyod.models.hbos import HBOS\n",
    "from pyod.utils.data import generate_data, evaluate_print\n",
    "from pyod.utils.example import visualize"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "contamination = 0.1 # 异常点占比\n",
    "n_train = 200 # 训练样本的个数\n",
    "n_test = 100 # 测试样本的个数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\envs\\deep_learning\\lib\\site-packages\\pyod\\utils\\data.py:185: FutureWarning: behaviour=\"old\" is deprecated and will be removed in version 0.8.0. Please use behaviour=\"new\", which makes the returned datasets in the order of X_train, X_test, y_train, y_test.\n",
      "  warn('behaviour=\"old\" is deprecated and will be removed '\n"
     ]
    }
   ],
   "source": [
    "# 生成数据\n",
    "X_train, y_train, X_test, y_test = \\\n",
    "    generate_data(n_train=n_train, \n",
    "                  n_test=n_test, \n",
    "                  n_features=2,\n",
    "                  contamination=contamination,\n",
    "                  random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 6.43365854,  5.5091683 ],\n",
       "       [ 5.04469788,  7.70806466],\n",
       "       [ 5.92453568,  5.25921966],\n",
       "       [ 5.29399075,  5.67126197],\n",
       "       [ 5.61509076,  6.1309285 ],\n",
       "       [ 6.18590347,  6.09410578],\n",
       "       [ 7.16630941,  7.22719133],\n",
       "       [ 4.05470826,  6.48127032],\n",
       "       [ 5.79978164,  5.86930893],\n",
       "       [ 4.82256361,  7.18593123],\n",
       "       [ 5.98049594,  6.28356746],\n",
       "       [ 6.33258429,  6.66392412],\n",
       "       [ 5.76600157,  5.97620246],\n",
       "       [ 6.0758669 ,  6.53009041],\n",
       "       [ 5.88816972,  5.97352684],\n",
       "       [ 5.40257927,  5.37920689],\n",
       "       [ 6.75674297,  7.2607963 ],\n",
       "       [ 5.70636785,  6.29952894],\n",
       "       [ 5.04840502,  5.67376352],\n",
       "       [ 5.64370447,  7.21564822],\n",
       "       [ 6.25760622,  4.88869009],\n",
       "       [ 4.2626848 ,  5.16744774],\n",
       "       [ 6.13773065,  6.25856245],\n",
       "       [ 6.59485505,  4.53524592],\n",
       "       [ 6.45018449,  6.02033788],\n",
       "       [ 6.37739196,  6.52573284],\n",
       "       [ 7.86684582,  6.85415672],\n",
       "       [ 6.07689629,  6.33425195],\n",
       "       [ 5.23991937,  5.16427815],\n",
       "       [ 4.50406714,  4.90993249],\n",
       "       [ 6.50748068,  5.27685129],\n",
       "       [ 6.37966443,  7.0397259 ],\n",
       "       [ 6.16874974,  6.47616877],\n",
       "       [ 5.28513416,  5.9106849 ],\n",
       "       [ 7.17154382,  5.10364277],\n",
       "       [ 6.75767014,  7.3769711 ],\n",
       "       [ 6.36518303,  4.65670841],\n",
       "       [ 6.26067312,  5.93530415],\n",
       "       [ 6.37308642,  6.58708922],\n",
       "       [ 5.37815423,  5.32695638],\n",
       "       [ 5.87994278,  5.22992625],\n",
       "       [ 6.12002151,  5.90954168],\n",
       "       [ 8.10035196,  5.18244595],\n",
       "       [ 5.37628324,  6.33811282],\n",
       "       [ 6.69601983,  7.82416104],\n",
       "       [ 7.29434886,  6.65696254],\n",
       "       [ 6.23372735,  6.71510127],\n",
       "       [ 5.51324196,  5.74784411],\n",
       "       [ 4.81770294,  5.81748427],\n",
       "       [ 6.76774781,  5.83276127],\n",
       "       [ 5.38266749,  5.71306146],\n",
       "       [ 6.57748752,  5.79601671],\n",
       "       [ 6.6778487 ,  4.95416256],\n",
       "       [ 5.30589439,  5.59593025],\n",
       "       [ 4.95525802,  8.34769811],\n",
       "       [ 5.1256809 ,  6.72965957],\n",
       "       [ 5.46878802,  5.59023239],\n",
       "       [ 6.24031789,  4.83677006],\n",
       "       [ 5.47143771,  5.88318164],\n",
       "       [ 5.32526506,  5.34402937],\n",
       "       [ 6.86671152,  6.80152024],\n",
       "       [ 5.64767261,  5.93287473],\n",
       "       [ 6.98657349,  4.86232177],\n",
       "       [ 6.2695876 ,  7.57480541],\n",
       "       [ 7.56719969,  4.45283741],\n",
       "       [ 5.39177221,  6.13451311],\n",
       "       [ 4.94574631,  5.46704453],\n",
       "       [ 5.89050452,  7.11761419],\n",
       "       [ 5.96378943,  6.17301636],\n",
       "       [ 6.40867995,  6.43345559],\n",
       "       [ 6.02241053,  5.04527161],\n",
       "       [ 6.62979801,  6.3441314 ],\n",
       "       [ 5.1252929 ,  5.45583517],\n",
       "       [ 6.70782866,  6.48289882],\n",
       "       [ 5.42553139,  5.78471622],\n",
       "       [ 5.8855827 ,  6.49208703],\n",
       "       [ 6.9960839 ,  6.05235803],\n",
       "       [ 6.93249336,  6.69650782],\n",
       "       [ 6.16401482,  4.84875998],\n",
       "       [ 5.18035641,  6.59117127],\n",
       "       [ 4.63577913,  6.09489046],\n",
       "       [ 6.79793028,  6.12156219],\n",
       "       [ 5.52035984,  5.32478866],\n",
       "       [ 6.65091688,  6.37620684],\n",
       "       [ 5.77231001,  6.84961654],\n",
       "       [ 6.68109995,  7.42648049],\n",
       "       [ 6.45212239,  5.86880383],\n",
       "       [ 5.88595858,  4.45709711],\n",
       "       [ 6.12015706,  5.98746666],\n",
       "       [ 4.93920876,  5.97983203],\n",
       "       [ 7.07123439,  5.41416667],\n",
       "       [ 5.23444277,  6.88122775],\n",
       "       [ 6.5058339 ,  8.44135502],\n",
       "       [ 4.94838362,  6.57453979],\n",
       "       [ 6.25193658,  6.04727937],\n",
       "       [ 6.72617263,  5.97629275],\n",
       "       [ 4.45565673,  5.32419595],\n",
       "       [ 7.08819433,  6.93474343],\n",
       "       [ 5.70242141,  6.40164031],\n",
       "       [ 8.22031026,  5.97512719],\n",
       "       [ 5.9907618 ,  6.15201066],\n",
       "       [ 6.48408922,  5.72173631],\n",
       "       [ 6.48341422,  4.44939332],\n",
       "       [ 6.26829247,  6.04037945],\n",
       "       [ 5.82656871,  5.62096183],\n",
       "       [ 5.51399854,  5.35118195],\n",
       "       [ 4.15124093,  5.78624384],\n",
       "       [ 6.87437013,  5.73249529],\n",
       "       [ 6.50652956,  5.13849337],\n",
       "       [ 4.95865007,  5.40123516],\n",
       "       [ 5.18211977,  5.05647505],\n",
       "       [ 6.35871413,  7.41876863],\n",
       "       [ 5.46808399,  4.65070221],\n",
       "       [ 6.52382411,  4.85480737],\n",
       "       [ 5.0562948 ,  6.39478031],\n",
       "       [ 5.86815848,  5.45194826],\n",
       "       [ 6.05451306,  5.67347886],\n",
       "       [ 7.50699548,  5.46101667],\n",
       "       [ 5.27151424,  5.63709148],\n",
       "       [ 5.67080487,  6.47505142],\n",
       "       [ 4.41166301,  6.33977394],\n",
       "       [ 5.56830159,  6.61954974],\n",
       "       [ 5.96200209,  6.41368113],\n",
       "       [ 5.68784023,  6.34934185],\n",
       "       [ 7.32692793,  5.41042717],\n",
       "       [ 5.9145078 ,  5.61222081],\n",
       "       [ 7.27047146,  5.65391292],\n",
       "       [ 5.41564647,  5.5387993 ],\n",
       "       [ 5.89175955,  5.36714564],\n",
       "       [ 5.7061453 ,  6.12537524],\n",
       "       [ 5.90790499,  6.66332334],\n",
       "       [ 5.7453006 ,  5.83680954],\n",
       "       [ 6.2161834 ,  7.79032977],\n",
       "       [ 5.37185362,  7.53417316],\n",
       "       [ 5.05604952,  6.18261376],\n",
       "       [ 5.72932484,  5.34978638],\n",
       "       [ 6.55755623,  6.47844335],\n",
       "       [ 5.61618393,  4.33010928],\n",
       "       [ 5.66499409,  6.11102126],\n",
       "       [ 6.00144643,  6.60289088],\n",
       "       [ 7.54208336,  6.33008297],\n",
       "       [ 6.45281968,  6.1181813 ],\n",
       "       [ 6.93506794,  6.42381435],\n",
       "       [ 6.59744398,  7.44272083],\n",
       "       [ 6.18102974,  5.78389595],\n",
       "       [ 6.35593494,  6.90620209],\n",
       "       [ 6.39990939,  6.84590486],\n",
       "       [ 5.46646382,  5.30766551],\n",
       "       [ 5.56530907,  4.98920813],\n",
       "       [ 6.08796866,  5.65703627],\n",
       "       [ 6.98114644,  4.97019307],\n",
       "       [ 7.24011768,  5.21745055],\n",
       "       [ 5.01245767,  5.34230512],\n",
       "       [ 7.55622975,  5.96803038],\n",
       "       [ 6.42224758,  5.85333843],\n",
       "       [ 5.92815842,  5.59653891],\n",
       "       [ 6.04047049,  6.39446468],\n",
       "       [ 7.33852079,  4.50503049],\n",
       "       [ 7.28469844,  6.42107114],\n",
       "       [ 5.70669337,  5.56316698],\n",
       "       [ 6.83237619,  6.18262023],\n",
       "       [ 4.77651712,  6.28956362],\n",
       "       [ 6.91268549,  6.68418394],\n",
       "       [ 5.5000539 ,  4.92969149],\n",
       "       [ 5.74002241,  8.59519302],\n",
       "       [ 4.76779692,  5.32788253],\n",
       "       [ 6.31267026,  5.90068576],\n",
       "       [ 5.84032799,  7.61480203],\n",
       "       [ 5.31948852,  5.98861065],\n",
       "       [ 6.16102986,  5.3581879 ],\n",
       "       [ 4.85101751,  6.21479241],\n",
       "       [ 7.44647706,  6.32267225],\n",
       "       [ 6.07183676,  6.06598108],\n",
       "       [ 5.79390075,  6.94387802],\n",
       "       [ 5.59688806,  4.91790525],\n",
       "       [ 4.738563  ,  6.06301309],\n",
       "       [ 6.84594784,  6.1894047 ],\n",
       "       [ 5.74688475,  6.36562664],\n",
       "       [ 6.14851235,  6.65892242],\n",
       "       [ 7.05794387,  5.23883285],\n",
       "       [-0.21999614, -1.46414892],\n",
       "       [ 2.46101237, -3.01531015],\n",
       "       [-2.03696965, -0.78657787],\n",
       "       [-2.95581391, -1.13757496],\n",
       "       [ 0.8576763 ,  2.89168633],\n",
       "       [ 3.20633824,  3.87348422],\n",
       "       [ 2.93053988,  2.17247313],\n",
       "       [-3.14992234, -1.19732529],\n",
       "       [-0.26742131, -5.00530414],\n",
       "       [ 0.34044146, -0.76397002],\n",
       "       [ 3.62531099,  5.73480803],\n",
       "       [ 0.67206046, -2.12776334],\n",
       "       [-5.4791906 ,  5.09571996],\n",
       "       [ 5.02938858, -2.96411798],\n",
       "       [ 2.34493348, -5.09478543],\n",
       "       [-4.00541482, -3.39829072],\n",
       "       [-2.46607264,  5.9499765 ],\n",
       "       [ 2.36310067, -1.38957802],\n",
       "       [ 2.84520847,  4.9830521 ],\n",
       "       [ 5.50442889, -5.30563323]])"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 1., 1., 1.,\n",
       "       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "HBOS(alpha=0.1, contamination=0.1, n_bins=10, tol=0.5)"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# train HBOS detector\n",
    "clf_name = 'HBOS'\n",
    "clf = HBOS()\n",
    "clf.fit(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 无监督学习得到prediction labels和训练数据的异常点得分\n",
    "y_train_pred = clf.labels_  # 二进制标签（0:inliers, 1:outliers）\n",
    "y_train_scores = clf.decision_scores_  # 训练数据的异常打分，分数越高，数据点的异常程度越高"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 在测试集上预测\n",
    "y_test_pred = clf.predict(X_test)  #clf被fit后，通过该函数预测test的异常标签，返回值为二进制\n",
    "y_test_scores = clf.decision_function(X_test)  # 返回异常分数，分数越高，异常程度越高"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "On Training Data:\n",
      "HBOS ROC:0.9947, precision @ rank n:0.8\n",
      "\n",
      "On Test Data:\n",
      "HBOS ROC:0.9744, precision @ rank n:0.6\n"
     ]
    }
   ],
   "source": [
    "print(\"\\nOn Training Data:\")\n",
    "evaluate_print(clf_name, y_train, y_train_scores) #ROC曲线面积\n",
    "print(\"\\nOn Test Data:\")\n",
    "evaluate_print(clf_name, y_test, y_test_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x720 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualize the results 真实结果左边，预测结果右边\n",
    "visualize(clf_name, X_train, y_train, X_test, y_test, y_train_pred,\n",
    "          y_test_pred, show_figure=True, save_figure=False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
